home *** CD-ROM | disk | FTP | other *** search
- {
- JOHN BECK
-
- > question me is that when I'm using the BIOS block palette
- > to create a fade in/out, it makes the screen flicker, which
- > is quite disturbing. What Info I need is how the VGA port
- > works on setting up the RGB palette. Thanks.
- }
-
- Type
- colorType = Record
- rvalue,
- gvalue,
- bvalue : Byte;
- end;
-
- paletteType = Array [0..255] of colorType;
-
- Procedure setpal(Var tp : paletteType);
- Var
- palseg,
- palofs : Word;
-
- Label wait1 {,wait2};
-
- begin
- palseg := seg(tp);
- palofs := ofs(tp);
- Asm
- mov dx, $3DA
-
- wait1:
- in al, dx
- test al, $08
- jz wait1
-
- { wait2:
- in al,dx
- test al,$08
- jnz wait2 }
-
- mov ax, 1012h
- xor bx, bx
- mov cx, 256
- mov es, palseg
- mov dx, palofs
- int 10h
- end;
- end;
-
- Procedure readpal(Var tp : paletteType);
- Var
- palseg,
- palofs : Word;
- begin
- palseg := seg(tp);
- palofs := ofs(tp);
- Asm
- mov ax, 1017h
- xor bx, bx
- mov cx, 256
- mov es, palseg
- mov dx, palofs
- int 10h
- end;
- end;
-
- {
- I cheat a little bit in the way that the screen flickering is handled,
- but I find that this way is faster For many animations+palette manipulations /
- second While still eliminating screen flickering. Normally there would be
- two tests for retrace, a 'jz' and a 'jnz', instead this only performs the
- 'jz' test. if your monitor still flickers, uncomment the other code.
- }